home *** CD-ROM | disk | FTP | other *** search
/ Mac Mania 4 / MacMania 4.toast / / Multimedia & Desktop / GifBuilder folder / Documentation < prev    next >
Text File  |  1996-04-30  |  17KB  |  258 lines

  1. GifBuilder 0.3.2 
  2. Documentation
  3.  
  4.  
  5. GifBuilder is a scriptable utility for creating animated GIF files. Its input is an existing animated GIF, a bunch of PICT, GIF and/or TIFF files or a QuickTime movie, and its output is a GIF89a file with multiple images.
  6.  
  7. Options include pixel depth, color palette, interlacing, transparency, interframe delay, disposal method, frame offset, looping and dithering.
  8.  
  9. GifBuilder should ultimately be placed onto many ftp archives, including Info-Mac (in gst/grf), Umich (in graphics/graphicsutil) and their mirrors.
  10.  
  11. Please read this document carefully if you want to get the best of GifBuilder. There are several shortcuts which can make your work much easier.
  12.  
  13. Usage
  14.  
  15. 1) Draw each frame
  16. Use any drawing program able to save as PICT, GIF or TIFF. Save frames in a new folder to make their retrieval easier. If you name them in alphabetical order (e.g. 0001.tiff, 0002.tiff, etc.), you can easily sort them later.
  17.  
  18. 2) Collect frames in GifBuilder
  19. Launch GifBuilder, be sure that there aren't frames from a previous animation in the Frames window (if that's the case, choose New in the File menu), and drag the frames from the Finder into the Frames window. If you don't have the Drag Manager (standard since MacOS 7.5), you can add each frame by choosing Add Frame in the File menu. You can also copy a picture from another application, or drag it. Then, check that they're in the correct order and, if necessary, change their order by dragging frames. You can also remove the selected frame(s) by choosing Clear in the Edit menu or hitting Backspace, sort them and reverse their order. Double-clicking a frame will open it in its own application; if you modify it, save it and choose Reload Frames in the File menu to update your changes (the Save command always use the disk copy).
  20.  
  21. 3) Set the options
  22. Set the standard graphic options (pixel depth, color palette and dithering); the GIF options (size, interlacing, transparency); and the animation options (interframe delay, disposal method, frames position and looping). Some of these properties (transparency, interframe delay, disposal method and position) are attached to individual frames; select the frame or group of frames before changing them. If no frame is selected, the settings will apply to the default values used for images you import.
  23. You can save the default options by choosing Save Options in the Options menu.
  24. Tip: Most options displayed in the Frames window can be changed by clicking or double-clicking them.
  25.  
  26. 4) Check the animation
  27. Choose Run in the Animation menu. To display a specific frame, stop the animation and select it in the Frames window. You can also use the Home, End, Up and Down keys. To start from the first selected frame, choose Continue. In the Animation window, you can move a frame by dragging it, or select the transparent color by Shift-clicking it (you can do it even when the animation is running, but depending on the speed, you'd better stop it first!).
  28.  
  29. 5) Build the animation
  30. Choose Save As in the File menu.
  31.  
  32. 6) Add an image tag to your HTML page
  33. Choose Copy HTML Image Tag in the Edit menu, and paste the resulting IMG tag in your HTML page. IMG fields contain a relative URL with the current name of the animation as well as the width and height. Of course, you can edit the tag to change the path of the image or add optional fields like ALT and ALIGN.
  34.  
  35. Options
  36.  
  37. Interlaced: With interlacing, a first rough image is loaded first, and then the vertical resolution improves in three additional passes. It isn't very useful for animations.
  38.  
  39. Colors and Depth: For cross-platform web animations, the 6x6x6 color table is recommended. The system (or grayscale) 1 bit/pixel table should be used for black and white images. Images created with other settings are likely to be dithered on color-table-based machines.
  40.  
  41. Dithering: Dithering is a way to simulate intermediate color shades with clouds of points. It should be used with continuous-tone images. With dithering, the color table should be chosen so that the image isn't dithered a second time on the target machine (see above), and transparency should be off.
  42.  
  43. Image Size: When Minimum Size is on, the size is calculated so that the animation's bottom right corner corresponds to the rightest lowest frame. Frames are always cropped to fit in the animation bounding box.
  44.  
  45. Background Color: The Background Color is the color used to paint the animation bounding box where no frame is displayed. With some Web browsers, the page background is used instead.
  46.  
  47. Loop: The Loop option specifies how many times the animation is repeated. Some browsers don't recognize this option, while others loop an unlimited number of times if the setting is more than 1.
  48.  
  49. Transparent Background: All pixels wich have the color specified by the Transparent Background are left untouched when the frame is rendered.
  50.  
  51. Frame Position: Each frame can be shifted by an arbitrary amount. The Frame Position specifies the horizontal and vertical distances between the top left animation corner and the top left frame corner. Positive values push the frame to the left and to the lower part. Negative values result in a cropped frame.
  52.  
  53. Interframe Delay: The Interframe Delay is the delay between the current frame and the following frame renderings. It's specified in hundredths of seconds (i.e. 100 means 1 second).
  54.  
  55. Disposal Method: The Disposal Method specifies what each frame becomes once the interframe delay is elapsed. Use Unspecified when transparency is off and each frame covers the whole animation, Do Not Dispose when you want to add some bits of image to the previous animation state, Revert to Background for moving objects on a transparent background, and Revert to Previous for moving objects on a background you've drawn with an earlier large frame. Note that Revert to Background isn't supported by some browsers.
  56.  
  57. Frame Optimization: The Frame Optimization option crops each frame (but the first one) to the part that has changed. This can result in tremendous file size savings. If some, but not all, of the frames have the Disposal Method set to Revert to Background, you are warned that this may give unexpected results.
  58.  
  59. Remarks
  60.  
  61. New: After asking you if you want to save your previous animation, New removes all the frames and reads the default settings from the Preference file.
  62.  
  63. Open: You can open an existing animation, or append to the end of the current animation by holding down the Shift key and choosing Open in the File menu or typing Command-Shift-O.
  64. Frames displayed in italic are loaded in memory, while those displayed in roman correspond to separate files.
  65.  
  66. Convert: You can convert a QuickTime movie directly to an animated GIF without opening it, by choosing Convert in the File menu. This saves a lot of memory.
  67.  
  68. Clear: Clear (in the Edit menu) or the Backspace key deletes the selected frames. To preserve the timing, hold down the Shift key and choose Special Clear or type Backspace. Example:
  69.  
  70. Before Clear: 
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78. Clear: 
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86. Shift-Clear: 
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. Undo: Undo allows to return to the state just before the last operation which changed the frames or frame order.
  96.  
  97. Color palette: System Palette and Gray Shades are fixed palette. Best Palette is optimized for all the frames simultaneously. Load Palette allows to use a Photoshop-compatible palette file. Four such palettes are included with GifBuilder. The first one, named "6x6x6 Palette", is a subset of the System palette where each component takes the six values 0, 51, 102, 153, 204 and 255; it has 6x6x6 = 216 entries. It's the palette used by NetScape for Windows, so you might want to choose it to avoid additional dithering on both Macintosh and Windows machines. You can also use subsets: "Gray from 6x6x6 Palette" (six gray values of the 6x6x6 palette), "2x2x2 Palette" (eight basic colors where each component is 0 or 255), or "16 from 6x6x6 Palette", superset of the previous one with eight additional colors: (153,153,153), (0,153,255), (255,51,0), (51,153,0), (255,153,255), (153,204,255), (255,255,153) and (204,204,204) (see below). All of them should give good results on both the Mac and Windows.
  98.  
  99.  
  100.  
  101. Note that the 4-bits-per-pixel System palette has some intermediate colors and shouldn't be used if you're concerned about cross-platform issues.
  102. To reuse the color palette of an existing GIF, open the GIF file with Open (in the File menu) and save the palette with Save Palette (in the Colors submenu of the Options menu). The GIF file doesn't have to contain multiple frames.
  103. The format of palette files is 256 entries of three bytes which represent the red, green and blue values of the corresponding index. 0 is black, and 255 is the maximum intensity. For palettes of less than 256 colors, fill the unused entries with the last used one. The file type is '8BCT', and the file creator should be 'gfBr' (GifBuilder's) to have a nice icon. Note that in AppleScript, RGB values are in the range 0-65535; to convert them from a byte value, multiply them by 257.
  104. When you load a palette, you can't choose the depth anymore. Choose a System, grayscale or best palette before changing the depth.
  105.  
  106. Scripting
  107.  
  108. Warning: scripting support is experimental. Some functionality is missing. This should be fixed in future releases.
  109.  
  110. GifBuilder implements a custom AppleEvent to create an animated GIF file from a bunch of PICT objects:
  111.  
  112. create GIF: 
  113.     create GIF  picture
  114.         in  file specification
  115.         [color table  system colors/gray shades]  -- or {{r1,g1,b1},{r2,g2,b2},...}
  116.         [depth  small integer]  -- bits per pixels
  117.         [transparency  no/white/first pixel]  -- or {red,green,blue}
  118.         [interlacing  boolean]
  119.         [disposal method  unspecified/no/restore to background/restore to previous]
  120.         [interframe delay  small integer]  -- in 1/100 seconds
  121.         [loop  boolean]
  122.         [dithering  boolean]
  123.  
  124. All the color values are in the range 0 (black) - 65535 (maximum intensity). The PICTs can be created by any good graphic (and many other) applications. Here is an example with clip2gif:
  125.  
  126. tell application "clip2gif"
  127.     set l to {}
  128.     save {100, 80} in window
  129.     repeat with i from 1 to 20
  130.         save {100, 80} in window 1 ¬
  131.             drawing {{rectangle:{50 - 2 * i, 40 - i, 50 + 2 * i, 40 + i}, color:{65535, 65535, 0}}, ¬
  132.             {drawn text:"Created by clip2gif and GifBuilder", position:{100 - 5 * i, 2, 200 - 5 * i, 30}}, ¬
  133.             {drawn text:"by Yves Piguet <piguet@ia.epfl.ch>", position:{0, -5 + 3 * i, 100, 100}}}
  134.         set end of l to content of window 1
  135.     end repeat
  136. end tell
  137.  
  138. tell application "GifBuilder"
  139.     create GIF l in (new file default name "multigif.gif")
  140. end tell
  141.  
  142. The core AppleEvents and a rudimentary object model are partially implemented, allowing to create new and modify existing animations. This is the preferred method. Here is an example of what can be done:
  143.  
  144. tell application "GifBuilder"
  145.  
  146.     open file "animation.gif" -- opens an existing animation
  147.  
  148.     make new frame at the beginning ¬
  149.         with data {contents:somePictObject} -- prepends a new frame with default frame options
  150.  
  151.     make new frame at the end ¬
  152.         with data {contents:file "lastFrame.tiff",
  153.         translation:{10, 10},
  154.         transparency:first pixel,
  155.         disposal method:restore to background,
  156.         interframe delay:50} -- appends another frame, with specified options
  157.  
  158.     make new frame before 5th frame with data {contents:file "newFrame.pict"}
  159.                     -- inserts a frame
  160.  
  161.     save in file "animation2.gif" -- saves the animation in a new file
  162.  
  163. end tell
  164.  
  165. And here is a "real" example that creates a bouncing ball on a transparent black background with clip2gif:
  166.  
  167. property w : 10
  168. property h : 95
  169.  
  170. tell application "GifBuilder"
  171.     
  172.     new
  173.     
  174.     repeat with t from -13 to 12
  175.         set y to t * t / 2
  176.         tell application "clip2gif-ppc" to set p to save {w, h} in picture
  177.                     drawing {{rectangle:{0, 0, w, h}}, {disk:{0, y, w, y + w}, color:{65535, 0, 0}}}
  178.         make new frame at end
  179.                     with data {contents:p, transparency:first pixel, disposal method:restore to background}
  180.     end repeat
  181.     
  182.     set loop to 0
  183.     
  184.     save in new file
  185.     
  186.     run animation
  187.     
  188. end tell
  189.  
  190. Results
  191.  
  192. Some option combinations can give unexpected results; this may be caused by strange features, viewer bugs, or GifBuilder bugs. If you don't succeed in creating files that load correctly in NetScape, choose Reset to Factory Settings in the Options menu and import your frames again.
  193.  
  194. One of the main goals of GifBuilder is to stick as closely as possible to the GIF 89a specifications, not to reproduce the way animations are performed on some particular browser.
  195.  
  196. Requirements
  197.  
  198. GifBuilder requires System 7 or above and 32-bit Color Quickdraw. The Drag Manager (which comes with PowerTalk and System 7.5) is recommended. AppleScript is obviously needed to Apple-script GifBuilder. On the PowerMacs, the file ObjectSupportLib is needed in the Extensions folder; it should be included with the System and AppleScript installer. QuickTime is needed for importing QuickTime movie. If Convert (in the File menu) is dimmed, QuickTime is not correctly installed.
  199. The animation, as well as the individual frames if they're loaded, must fit in RAM; set the application memory partition appropriately (Get Info in the Finder). GifBuilder shouldn't crash in low memory conditions; but if it does, try to increase the memory partition to some high value (if you can) before sending me a bug report.
  200.  
  201. Frequently Asked Questions
  202.  
  203. About Animated GIF
  204.  
  205. Local animations are ok, but when I use an HTTP server, they don't loop and the end of the last frame is corrupted. What happens?
  206. You probably corrupted the file when you uploaded it to the server. Be sure that you choose the binary mode (not MacBinary) for your file transfer.
  207.  
  208. Can I choose which frame is displayed by old browsers?
  209. No. Some GIF decoders display only the first frame, while others render all the images but don't recognize the looping NetScape 2.0 extension.
  210.  
  211. Netscape doesn't display correctly transparent animations. Is there a trick?
  212. Try to set the Disposal Method of all the frames to Revert to Background, and specify a background GIF to be tiled behind the HTML page with the <body> tag: <body background=tile.gif>.
  213.  
  214. Is it possible to have an animated background?
  215. Not with the current versions of Netscape (2.0(x)).
  216.  
  217. Should I put the original images on my server?
  218. No. Animated GIFs are completely self-contained. They don't contain any references to the original files.
  219.  
  220. How can I stop animations in NetScape 2.0 for the Mac?
  221. You should hold down the Command key and hit the dot key exactly when NetScape reloads the image from its cache.
  222.  
  223. About GifBuilder
  224.  
  225. I want to keep the color palette of my frames, which are GIF files. What should I do?
  226. Open one of your frames in GifBuilder with Open, add the other frames and set their options, and save the result.
  227.  
  228. Why can't I choose a System Palette with a depth of 3, 5, 6 or 7 bits/pixel?
  229. Because the Mac doesn't define such palettes.
  230.  
  231. Why is the transparency set to First Pixel even if I specify a color?
  232. In GIF files, the transparency is always based on a color. When GifBuilder reads an animation, it looks at the first pixel to see if it's the transparent color, and if so reports that the transparency is based on it.
  233.  
  234. How can I choose the comment displayed by JPEGView and other utilities?
  235. You can't. GifBuilder adds a fixed comment containing its and my names. This is deliberate.
  236.  
  237. I've found a GifBuilder bug! Revert to Previous doesn't work!
  238. If your browser doesn't handle correctly a feature, this isn't necessarily a GifBuilder bug. This one, for instance, is most probably not.
  239.  
  240. Images are dithered even if I don't select it in GifBuilder! Why?
  241. Images are usually dithered by the browser if its palette isn't the same as the GIF's. You'd better use the 6x6x6 palette provided with GifBuilder, which is used by several browsers on the Mac as well as on alien machines, and let GifBuilder do the dithering if you need to.
  242.  
  243. I don't use Windows 3.1 anymore. Are you working on a Windows NT version?
  244. GifBuilder runs on the Mac. I don't intend to port it to any currently available operating system (I might have ideas about new ones, however).
  245.  
  246. So give me the source, I'll port it.
  247. First, I don't make the source code available. Second, even if it was, the GIF part is about 10% of the whole program. The remaining is closely tied to the Mac user interface and graphical model.
  248.  
  249. Small Print
  250. This document is Copyright 1995-1996, Yves Piguet. All rights reserved.
  251. The author makes no warranty with respect to this document, its quality, accuracy, or fitness for a particular purpose. As a result, this document is provided "as is", and the user is assuming the entire risk as to its quality and accuracy.
  252.  
  253. Author
  254. Yves Piguet <piguet@ia.epfl.ch>
  255. Av. de la Chablière 35
  256. 1004 Lausanne
  257. Switzerland
  258.